package DAO;

import Codigo.Cidades;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class CidadeDAO {
     public boolean Cadastrar(Cidades obj)
    {
        Boolean retorno = false;
        String sql = "INSERT INTO cidade (nome, descricao, dica1, dica2, dica3, item1, item2)" 
                + "VALUES(?,?,?,?,?,?,?)";
        PreparedStatement psm = Conexao.getPreparedStatement(sql);
                    try {
                        psm.setString(1, obj.getNomecidade());
                        psm.setString(2, obj.getDescricao());
                        psm.setString(3, obj.getDica1());
                        psm.setString(4, obj.getDica2());
                        psm.setString(5, obj.getDica3());
                        psm.setString(6, obj.getItem1());
                        psm.setString(7, obj.getItem2());
                        //Executar o insert
                        Integer resultado = psm.executeUpdate();
                        if (resultado > 0) {
                            retorno = true;
                        } else {
                            retorno = false;
                        }
                    } catch (SQLException ex) {
                        System.out.println("Erro ao acessar o banco"+ ex.getMessage());
                        return false;
                    }
        return retorno;
    }
     public List<Cidades> Listar()
    {
    List<Cidades> lista = new ArrayList<Cidades>();
        String sql = "SELECT * FROM cidade";
        PreparedStatement psm = Conexao.getPreparedStatement(sql);
                    try {
                        ResultSet resultado = psm.executeQuery();
                        
                        while(resultado.next())
                        {
                            Cidades obj = new Cidades();
                            obj.setCidadeid(resultado.getInt("cidadeid"));
                            obj.setNomecidade(resultado.getString("nome"));
                            obj.setDescricao(resultado.getString("descricao"));
                            obj.setDica1(resultado.getString("dica1"));
                            obj.setDica2(resultado.getString("dica2"));
                            obj.setDica3(resultado.getString("dica3"));
                            obj.setItem1(resultado.getString("item1"));
                            obj.setItem2(resultado.getString("item2"));
                            obj.setImagem(resultado.getBytes("imagem"));
                            //adiciona na lista
                            lista.add(obj);
                        }
                    } catch (SQLException ex) {
                        lista = null;
                     
                    }
        return lista;
    }
     
      public Boolean Excluir(Cidades obj)
    {
        Boolean retorno = false;
        //MONTA A STRING DE EXCLUSÃO A PARTIR DA CHAME PRIMÁRIA
        String sql = "DELETE FROM cidade WHERE cidadeid=?";
        PreparedStatement psm = Conexao.getPreparedStatement(sql);
        try{
            psm.setInt(1, obj.getCidadeid());
            Integer resultado = psm.executeUpdate();
            if(resultado>0)
            {
                retorno = true;
            }
            else
            {
                retorno = false;
            }
        }
        catch (SQLException ex){
            System.out.println("BD: "+ ex.getMessage());
            }
        return retorno;
    }
      public Cidades Consultar(Cidades obj2) {

        String sql = "SELECT * FROM cidade WHERE nome = ?";
        Cidades obj = null;
        PreparedStatement psm = Conexao.getPreparedStatement(sql);

        try {
            psm.setString(1, obj2.getNomecidade());
            ResultSet resultado = psm.executeQuery();

            if (resultado.next()) {
                obj = new Cidades();
                obj.setCidadeid(resultado.getInt("Cidadeid"));
                obj.setNomecidade(resultado.getString("nomecidade"));
                obj.setDica1(resultado.getString("dica1"));
                obj.setDica2(resultado.getString("dica2"));
                obj.setDica3(resultado.getString("dica3"));
                obj.setItem1(resultado.getString("Item1"));
                obj.setItem2(resultado.getString("Item2"));

            }

        } catch (SQLException ex) {
            System.out.println("Erro ao acessar o banco: " + ex.getMessage().toString());

        }

        return obj;
    }
      
       public Cidades ListarCidade()
    {
    Cidades obj = new Cidades();
        String sql = "SELECT * FROM cidade ORDER BY RANDOM() LIMIT 3";
        PreparedStatement psm = Conexao.getPreparedStatement(sql);
                    try {
                        ResultSet resultado = psm.executeQuery();
                        
                        if(resultado.next())
                        {
                           
                            obj.setCidadeid(resultado.getInt("cidadeid"));
                            obj.setNomecidade(resultado.getString("nome"));
                            obj.setDescricao(resultado.getString("descricao"));
                            obj.setDica1(resultado.getString("dica1"));
                            obj.setDica2(resultado.getString("dica2"));
                            obj.setDica3(resultado.getString("dica3"));
                            obj.setItem1(resultado.getString("item1"));
                            obj.setItem2(resultado.getString("item2"));
                            obj.setImagem(resultado.getBytes("imagem"));
                            
                        }
                    } catch (SQLException ex) {
                        obj = null;
                     
                    }
        return obj;
    }
}
